package com.pospi.util;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;


import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.lany.sp.SPHelper;
import com.pospi.dto.GoodsDto;
import com.pospi.dto.OrderDto;
import com.pospi.dto.OrderPaytype;
import com.pospi.pai.yunpos.R;
import com.pospi.pai.yunpos.login.Constant;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import me.xiaopan.android.graphics.BitmapUtils;

import static android.content.Context.MODE_PRIVATE;

/**
 * Created by acer on 2018/9/27.
 */

public class StarPrintHelper {
    public static Bitmap creatImage(OrderDto dto , Context context) {
        String shop_name = SPHelper.getInstance().getString(Constant.STORE_NAME);//得到存储的店铺的名字
        List<OrderPaytype> list = new Gson().fromJson(dto.getPayway(), new TypeToken<List<OrderPaytype>>() {
        }.getType());
        String payWay = "";
        for (OrderPaytype paytype : list) {
            payWay +=paytype.getPayName()+"["+paytype.getSs()+"]"+"  ";
        }
        List<GoodsDto> goodsList = Sava_list_To_Json.changeToList(dto.getOrder_info());
        double jeAll = 0;
        for (GoodsDto goodsDto : goodsList) {
            if (goodsDto.getUsejf().equals("1")) {
                jeAll += goodsDto.getPrice() * goodsDto.getNum() - goodsDto.getDiscount();
            }
        }
        try {
            ArrayList<StringBitmapParameter> mParameters = new ArrayList<>();

//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("商户存根联"));
//            mParameters.add(new StringBitmapParameter("用户名称(MERCHANT NAME):江苏东大集成电路系统工程技术有限公司"));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("商户编号(MERCHANT NO): 304301057328106"));
//            mParameters.add(new StringBitmapParameter("终端编号(TEBMINAL NO): 00706937"));
//            mParameters.add(new StringBitmapParameter("操作员号: 01"));
//            mParameters.add(new StringBitmapParameter("卡号(CARD NO)"));
//            mParameters.add(new StringBitmapParameter("12345678901212(C)", BitmapUtil.IS_RIGHT));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("发卡行(ISSUER):工商银行"));
//            mParameters.add(new StringBitmapParameter("收单行(ACQUIRER):华夏银行"));
//            mParameters.add(new StringBitmapParameter("交易类别(TXN TYPE):"));
//            mParameters.add(new StringBitmapParameter(" 消费撤销(VOID)"));
//            mParameters.add(new StringBitmapParameter("-------------------------"));
//            mParameters.add(new StringBitmapParameter("持卡人签名CARD HOLDER SIGNATURE:"));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("\n"));

            mParameters.add(new StringBitmapParameter(shop_name, BitmapUtil.IS_CENTER, BitmapUtil.IS_LARGE));
//            mParameters.add(new StringBitmapParameter("-----------------------------"));
            mParameters.add(new StringBitmapParameter("小票号："+dto.getMaxNo()));
            mParameters.add(new StringBitmapParameter("操作员："+dto.getCashiername()));
            mParameters.add(new StringBitmapParameter("时间："+ GetData.getDataTime()));

            mParameters.add(new StringBitmapParameter("-----------------------------"));
            mParameters.add(new StringBitmapParameter("名称                 数量         单价 "));
            double discount = 0;
            for (GoodsDto goodsDto : goodsList) {
                String name = goodsDto.getName();
                String num = goodsDto.getCode() + "";
//                while (num.length() < 18) {
//                    num += " ";
//                }
                mParameters.add(new StringBitmapParameter(goodsDto.getName()));
                mParameters.add(new StringBitmapParameter("                       "+ goodsDto.getNum()+"           "+ goodsDto.getPrice()));
                Log.i("name", name + num + goodsDto.getPrice());
                discount += goodsDto.getDiscount();
            }
            mParameters.add(new StringBitmapParameter("-----------------------------"));
            mParameters.add(new StringBitmapParameter("金额：      "+payWay));
            mParameters.add(new StringBitmapParameter("优惠：      "+discount));
            mParameters.add(new StringBitmapParameter("找零：      "+dto.getZl_money()));
            mParameters.add(new StringBitmapParameter("\n"));
            mParameters.add(new StringBitmapParameter("\n"));
//            mParameters.add(new StringBitmapParameter("发卡行(ISSUER)"));
//            mParameters.add(new StringBitmapParameter("农业银行", BitmapUtil.IS_RIGHT));
//            mParameters.add(new StringBitmapParameter("收单行(ACQUIRER)"));
//            mParameters.add(new StringBitmapParameter("农业银行", BitmapUtil.IS_RIGHT));
//            mParameters.add(new StringBitmapParameter("卡号(CARD NO)"));
//            mParameters.add(new StringBitmapParameter("12345678901212(C)", BitmapUtil.IS_RIGHT, BitmapUtil.IS_LARGE));
//            mParameters.add(new StringBitmapParameter("卡有效期(EXP DATE)     2023/10"));
//            mParameters.add(new StringBitmapParameter("交易类型(TXN TYPE)"));
//            mParameters.add(new StringBitmapParameter("消费", BitmapUtil.IS_RIGHT, BitmapUtil.IS_LARGE));
//            mParameters.add(new StringBitmapParameter("-------------------------"));
//            mParameters.add(new StringBitmapParameter("交易金额未超过300.00元，无需签名"));
//
//            ArrayList<StringBitmapParameter> mParametersEx = new ArrayList<>();/**如果是空的列表，也可以传入，会打印空行*/
//            mParametersEx.add(new StringBitmapParameter("\n"));
//            mParametersEx.add(new StringBitmapParameter("\n"));
//            mParametersEx.add(new StringBitmapParameter("\n"));

            Bitmap textBitmap = BitmapUtil.StringListtoBitmap(context, mParameters);
//            Bitmap textBitmap2 = BitmapUtil.StringListtoBitmap(getContext(), mParametersEx);
//            Bitmap mergeBitmap3 = BitmapUtil.addBitmapInFoot(mergeBitmap2, textBitmap2);

//            Log.e("fmx", "argb_8888 =  " + mergeBitmap3.getHeight() * mergeBitmap3.getWidth() * 32);
//            Log.e("fmx", "rgb_565 =  " + mergeBitmap3.getHeight() * mergeBitmap3.getWidth() * 16);

            Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.icon_code);
            saveBitmap(context, BitmapUtil.addBitmapInHead(bitmap, textBitmap));
            return textBitmap;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static Bitmap creatBq(GoodsDto dto, Context context,Bitmap codeBitmap) {
        String amount = DoubleSave.doubleSaveTwo(dto.getPrice() * dto.getNum())+"";
        ArrayList<StringBitmapParameter> mParameters = new ArrayList<>();
        mParameters.add(new StringBitmapParameter(dto.getName(), BitmapUtil.IS_CENTER));
        mParameters.add(new StringBitmapParameter("  单价:" + dto.getPrice() + "元/KG" + "   生产日期:" + GetData.getYYMMDDTime()));
        mParameters.add(new StringBitmapParameter("  重量:"+dto.getNum()+"KG" + "     保质期:1天"));
        mParameters.add(new StringBitmapParameter("  金额:"));
        mParameters.add(new StringBitmapParameter("    ", BitmapUtil.IS_LEFT, BitmapUtil.IS_LARGE));

        Bitmap textBitmap = BitmapUtil.StringListtoBitmap(context, mParameters);
        Bitmap bitmap = BitmapUtil.addBitmapInFoot(textBitmap, codeBitmap,amount);
        saveBitmap(context, bitmap);
        return bitmap;
    }
    public static Bitmap creatBq2(GoodsDto dto, Context context,Bitmap codeBitmap) {
        String amount = DoubleSave.doubleSaveTwo(dto.getPrice() * dto.getNum())+"";
        ArrayList<StringBitmapParameter> mParameters = new ArrayList<>();
        mParameters.add(new StringBitmapParameter(dto.getName(), BitmapUtil.IS_CENTER));
        mParameters.add(new StringBitmapParameter("  单价:" + dto.getPrice() + "元/件" + "   生产日期:" + GetData.getYYMMDDTime()));
        mParameters.add(new StringBitmapParameter("  件数:"+dto.getNum() + "            保质期:1天"));
        mParameters.add(new StringBitmapParameter("  金额:"));
        mParameters.add(new StringBitmapParameter("    ", BitmapUtil.IS_LEFT, BitmapUtil.IS_LARGE));

        Bitmap textBitmap = BitmapUtil.StringListtoBitmap(context, mParameters);
        Bitmap bitmap = BitmapUtil.addBitmapInFoot(textBitmap, codeBitmap,amount);
        saveBitmap(context, bitmap);
        return bitmap;
    }
    public static void saveBitmap(Context context,Bitmap bitmap) {
        // 首先保存图片
        File appDir = new File(Environment.getExternalStorageDirectory(),"zxing_image");
        if (!appDir.exists()) {
            appDir.mkdir();
        }
        String fileName = "zxing_image" + ".png";
        File file = new File(appDir, fileName);
        try {
            FileOutputStream fos = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
            fos.flush();
            fos.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
